package dataview;

import java.text.DateFormat;
import java.util.LinkedList;
import java.util.List;
import exceptions.DBException;
import store.BaseStore;
import store.Menu;
import store.Termine;
import store.ValutazioniMenuAttive;

public class MenuVis {
	private Menu menu;
	private boolean tutteValutazioni;
	
	public MenuVis conTutteValutazioni() {
		MenuVis m = new MenuVis(menu);
		m.tutteValutazioni = true;
		return m;
	}
	
	public MenuVis(Menu menu) {
		this.menu = menu;
		tutteValutazioni = false;
	}
	
	public String getNome() {
		return menu.getNome();
	}
	
	public String getQuando() {
		if (menu.getInfo() != null && menu.getInfo().getQuando() != null)
			return DateFormat.getDateInstance(DateFormat.SHORT).format(menu.getInfo().getQuando().getTime());
		return "";
	}
	
	public String getPresentazione() {
		if (menu.getInfo() != null && menu.getInfo().getPresentazione() != null) return menu.getInfo().getPresentazione();
		return "";
	}
	
	public String getNote() {
		if (menu.getInfo() != null && menu.getInfo().getNote() != null) return menu.getInfo().getNote();
		return "";
	}
	
	public int getNumPersone(){
		if (menu.getInfo() != null && menu.getInfo().getNumeroPersone() != 0) return menu.getInfo().getNumeroPersone();
		return 0;
	}
	
	public List<String> getTags() {
		List<String> tags = new LinkedList<String>();
		for (Termine termine : menu.getTag())
			tags.add(termine.getTermine());
		return tags;
	}
	
	public String getDifficolta() {
		if (menu.getInfo() != null && menu.getInfo().getDifficolta() != null) return menu.getInfo().getDifficolta().toString();
		return "";
	}
	
	public List<String> getPortate() {
		return menu.getPortate().vis();
	}
	
	public List<String> getValutazioni() {
		List<String> s = new LinkedList<String>();
		ValutazioniMenuAttive v;
		try {
			v = BaseStore.getSettingsValutazioneMenu();
		} catch (DBException e) {
			v = new ValutazioniMenuAttive();
		}
		if (tutteValutazioni || v.eAttiva(ValutazioneRicetta.vegana)) s.add("Vegana: " + (menu.isVegano() ? "si" : "no"));
		if (tutteValutazioni || v.eAttiva(ValutazioneRicetta.vegetariana)) s.add("Vegetariana: " + (menu.isVegetariano() ? "si" : "no"));
		if (tutteValutazioni || v.eAttiva(ValutazioneRicetta.calorie))
			s.add("Calorie: " + (menu.caloriePrecise() ? "" : (char)126) + menu.caloriePerPersona() + " kcal/persona");
		return s;
	}
}